import { Image as ImageLayer, Group } from 'ol/layer';
import Static from 'ol/source/ImageStatic';



/**
 * 图片管理类  （可用于批量添加，单个等其他需求未开发有需要再进行拓展）
 * 
 */

interface imageData {
    imageUrl: string,
    extent?: [number, number, number, number],
    imageProjection?: string
}

export default class ImageLayerManager {
    constructor(private mapProjectionCode: string = "EPSG:4326") { }

    /**  
  * 加载多个图片图层并添加到图层组中
  * @param imageUrl 图片的URL  
  * @param extent 图片的地理范围（经纬度坐标） 
  * @param imageProjection 图片的投影（如果与地图投影不同，则需要进行转换）  
  * @returns 创建的图层  
  */
    public addImageLayers(imageDatas: Array<imageData>): Group {
        const layerGroup = new Group({ layers: [] })
        imageDatas.forEach(imgData => {
            const projection = imgData.imageProjection || this.mapProjectionCode;
            const extent = imgData.extent || [-180, -90, 180, 90]
            const imageLayer = new ImageLayer({
                source: new Static({
                    url: imgData.imageUrl,
                    projection,
                    imageExtent: extent  // 默认全球范围
                }),
                opacity: 0.3, // 可根据需要调整不透明度  
                visible: true, // 默认可见  
            });
            layerGroup.getLayers().push(imageLayer)
        })


        return layerGroup;
    }


    public addImageLayer(imgUrl: string) {
        const extent =  [115,32, 125,40,]
        const imageLayer = new ImageLayer({
            zIndex:2,
            source: new Static({
                url: imgUrl,
                projection:this.mapProjectionCode,
                imageExtent: extent  // 默认全球范围
            }),
            opacity: 1, // 可根据需要调整不透明度  
            visible: true, // 默认可见  
        });
        return imageLayer
    }
}